﻿#define _CRT_SECURE_NO_WARNINGS 1;
#include <iostream>
using namespace std;
#include <cmath>
#include <iomanip>
//第一题：不动点迭代
//(编写C++代码，采用不动点迭代法
//求方程f(x) = x² - 3x + 2 - e的x次方 = 0在1附近的近似根。
//要求：两次迭代之间的绝对误差小于10 - 8。
//输出方程求解结果，包括：方程的根、迭代次数，f(x)值。
//double fun(double x)
//{
//	return (pow(x, 2) + 2 - exp(x)) / 3;
//}
//int main()
//{
//	double x = 1.0 / 2;
//	int count = 1;
//	while (1)
//	{
//		cout << "第" << count << "次迭代，x=" << setprecision(9) <<x << " f(x)=" << fun(x) << endl;
//		count++;
//		if (x - fun(x) < 1e-8 && fun(x) - x < 1e-8)
//			break;
//		x = fun(x);
//	}
//	return 0;
//}

//第二题：整数规划：通过对qpsr的互相限制来求出满足条件的所有组数
int is_int(double s)//判断s不是整数
{
	if (s == (int)s)
	{
		return 1;
	}
	else
		return 0;
}
int main()
{
	int p, q, r;
	double s;
	for (p = 2; p <= 4; p++)
	{
		for (q = 3; q <= 3 * p / (p - 1); q++)
		{
			for (int r = q; r <= 2 * p * q / (p * q - p - q); r++)
			{
				if (p * q * r - q * r - p * r - p * q != 0)
				{
					s = p * q * r / (p * q * r - q * r - p * r - p * q);
				}
				else
					continue;
				if (is_int(s) && s > 0)
				{
					cout << "solution:(" << p << "," << q << "," << r << "," << s << ")" << endl;
				}
			}
		}
	}
}